/****
 *
 * 5．题目一写一个方法输入给定数组 按照性别拆出两个列表，并分别按年龄排序
6．正确定义题目一函数的参数和返回值的类型
7．正确定义数组的类型
8．正确定义对象的类型
 *
 *
 *
 *
 ****/
// 输入：
// interface ListItem {
//   name: string;
//   message: MessageItem;
// }
// interface MessageItem {
//   age: number;
//   gender: string;
//   height: number;
// }
// interface Result {
//   man: ListItem[];
//   girl: ListItem[];
// }
// var list = [
//   {
//     name: "a",
//     message: {
//       age: 20,
//       gender: "男",
//       height: 1.78,
//     },
//   },
//   {
//     name: "b",
//     message: {
//       age: 22,
//       gender: "女",
//       height: 1.7,
//     },
//   },
//   {
//     name: "c",
//     message: {
//       age: 18,
//       gender: "男",
//       height: 1.83,
//     },
//   },
//   {
//     name: "e",
//     message: {
//       age: 27,
//       gender: "男",
//       height: 1.75,
//     },
//   },
//   {
//     name: "d",
//     message: {
//       age: 19,
//       gender: "女",
//       height: 1.73,
//     },
//   },
// ];
// function test1(arr: ListItem[]): Result {
//   const man: ListItem[] = [];
//   const girl: ListItem[] = [];
//   arr.forEach((v) => {
//     if (v.message.gender === "男") {
//       man.push(v);
//     } else if (v.message.gender === "女") {
//       girl.push(v);
//     }
//   });
//   man.sort((a, b) => {
//     return a.message.age - b.message.age;
//   });
//   girl.sort((a, b) => {
//     return a.message.age - b.message.age;
//   });
//   return {
//     girl,
//     man
//   }
// }
// const s = test1(list);
// console.log(s);
// 写一个方法输入以上数组 按照性别拆出两个列表，并分别按年龄排序 输出：
// let man = [
//     {
//         name:'c',
//         message:{
//             age:18,
//             gender:'男',
//             height:1.83
//         }
//     },
//     {
//         name:'a',
//         message:{
//             age:20,
//             gender:'男',
//             height:1.78
//         }
//     },
//     {
//         name:'e',
//         message:{
//             age:27,
//             gender:'男',
//             height:1.75
//         }
//     }
// ]
// let girl = [
//     {
//         name:'d',
//         message:{
//             age:19,
//             gender:'女',
//             height:1.73
//         }
//     },
//     {
//         name:'b',
//         message:{
//             age:22,
//             gender:'女',
//             height:1.70
//         }
//     }
// ]
// 9．正确定义题目二的函数的参数类型和返回数据类型
// 10．题目二写一个方法输入给定数组 进行数据转换并排序（每个对象中的key不是固定的）
// 11．正确定义题目二的数组类型
// 12．正确定义题目二的对象类型
// 13．正确实现题目二的功能
//   输入：
var arr1 = [
    { name: "name1" },
    { a: "a1", b: "b1" },
    { a: "a2", b: "b2" },
    { a: "a3" },
    { a: "a4", d: "d1", c: "c1" },
];
function test2(list) {
    var obj = {};
    //   循环数组
    list.forEach(function (v) {
        // 获取每一个对象的键名  并且放到一个数组中
        var result = Object.keys(v);
        // 循环键名数组
        result.forEach(function (key) {
            // 是否存在该项
            if (obj[key]) {
                // 直接推入数组
                obj[key].push(v[key]);
            }
            else {
                // 复制新数组 并放入第一项
                obj[key] = [v[key]];
            }
        });
    });
    return obj;
}
var sss = test2(arr1);
console.log(sss);
// 输入：
// let x = -123;
// let y = 120;
// let n = 212;
// 将整数翻转并判断其是否为回文数 输出： x = -321 n = 21
// let x = {
//     number: -321,
//     palindrome: false,
// };
// let y = {
//     number: 21,
//     palindrome: false,
// };
// let n = {
//     number: 212,
//     palindrome: true,
// };
// function test3(num: number): { number: number; palindrome: boolean } {
//   // 保留正负号
//   const flag = num > 0;
//   // 转化正数 => 转化字符串 => 转化数组 => 翻转 => 字符串
//   const result = +Math.abs(num).toString().split("").reverse().join("");
//     // 获取转化结果
//   const s = flag ? result : -result;
//   return { number: s, palindrome: s === num };
// }
// const s11 = test3(-110011);
// const s2 = test3(112211);
// const s3 = test3(-123321);
// console.log(s11);
// console.log(s2);
// console.log(s3);
